﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using ProyectoBastanteo.Negocio;
using ProyectoBastanteo.Dominio;
namespace ProyectoBastanteo.Controllers
{
    public class BastanteoController : Controller
    {
        // Dependencias

        IBastanteoService bastanteoService = null;
        IAdministracionService AdministracionService = null;
        //
        // GET: /Bastanteo/

        public ActionResult Index()
        {
           

            TempData["Clientes"] = ListarClientes();
            TempData["Poderes"] = ListarPoderes();
            return View(bastanteoService.ListarBastanteo());
        }

        //
        // GET: /Bastanteo/Details/5

        public ActionResult Details(int codigo,string grupo,string poder)

        {
            
            Cliente xClie = new Cliente();
            xClie.codclie = codigo;
            Poderes xPoder = new Poderes();
            xPoder.codpod = poder;

                       
            return View(bastanteoService.ObtenerBastanteo(xClie,grupo,xPoder));
        }

        //
        // GET: /Bastanteo/Create

        public ActionResult Create()
        {
            return View();
        }

        

        //
        // POST: /Bastanteo/Create

        [HttpPost]
        public ActionResult Create(FormCollection collection)
        {
            try
            {
                Cliente clienteCol = AdministracionService.ObtenerCliente(int.Parse(collection["Cliente"]));
                string grupoCol = collection["grubast"];
                
                Poderes poderCol = bastanteoService.ObtenerPoderes(collection["Poder"]);
                string inteCol = collection["tipoint"];
                double importeCol = double.Parse(collection["importe"]);
                DateTime fechaCol = DateTime.Parse(collection["fecvenc"]);
                Bastanteo B = bastanteoService.RegistrarBastanteo(clienteCol.codclie, grupoCol, poderCol.codpod, inteCol, importeCol, fechaCol);
                
                TempData["Clientes"] = ListarClientes();
                TempData["Poderes"] = ListarPoderes();
                return RedirectToAction("Index");
            }
            catch (Exception ex)
            {
                ModelState.AddModelError(string.Empty, ex.Message);
                //TempData["tipos"] = ListarTipos();
                return View("Create");
            }
        }
        
        //
        // GET: /Bastanteo/Edit/5
 
        //Model.codclie, Model.grubast, Model.codpode
        public ActionResult Edit(int codigo, string grupo, string poder)
        {

            //TempData["Clientes"] = ListarClientes();
            TempData["Poderes"] = ListarPoderes();
            Cliente xClie = new Cliente();
            xClie.codclie = codigo;
            Poderes xPoder = new Poderes();
            xPoder.codpod = poder;
            return View(bastanteoService.ObtenerBastanteo(xClie, grupo, xPoder));

             
            
        }

        public ActionResult AgrGrupo(int id)
        {
            return View();
        }

        //
        // POST: /Bastanteo/Edit/5

       

        [HttpPost]

        public ActionResult Edit(int codigo, string grupo, string poder, FormCollection collection)
        {

            Cliente xClie = new Cliente();
            xClie.codclie = codigo;
            Poderes xPoder = new Poderes();
            xPoder.codpod = poder;
            Bastanteo BastanteoAModificar = new Bastanteo()
            {
                codclie = AdministracionService.ObtenerCliente(xClie.codclie),
                grubast = grupo,
                codpode = bastanteoService.ObtenerPoderes(xPoder.codpod),
                tipoint = collection["tipoint"],
                importe = double.Parse(collection["importe"]),
                fecvenc = DateTime.Parse(collection["fecvenc"])
            };


            try
            {
                // TODO: Add update logic here

                Bastanteo BastanteoAModificado = bastanteoService.ModificarBastanteo(BastanteoAModificar);
                //TempData["tipos"] = ListarTipos();
                return RedirectToAction("Index");
            }
            catch (Exception ex)
            {
                ModelState.AddModelError(string.Empty, ex.Message); // Agregamos el error a mostrarse
                return View("Creacion", BastanteoAModificar); // Problemas! De nuevo a Modificacion.aspx


            }

        }

        //
        // GET: /Bastanteo/Delete/5

        public ActionResult Delete(int codigo, string grupo, string poder)
        {

                       
            Cliente xClie = new Cliente();
            xClie.codclie = codigo;
            Poderes xPoder = new Poderes();
            xPoder.codpod = poder;
            return View(bastanteoService.ObtenerBastanteo(xClie, grupo, xPoder));
           
           
        }

        //
        // POST: /Bastanteo/Delete/5

        [HttpPost]
        public ActionResult Delete(int codigo, string grupo, string poder, FormCollection collection)
        {
            Cliente xClie = new Cliente();
            xClie.codclie = codigo;
            Poderes xPoder = new Poderes();
            xPoder.codpod = poder;
            try
            {
                Bastanteo BastanteoAEliminar = bastanteoService.ObtenerBastanteo(xClie, grupo, xPoder);
                bastanteoService.EliminarBastanteo(BastanteoAEliminar);
                TempData["mensaje"] = "Bastanteo" + BastanteoAEliminar.codclie.codclie + " eliminado exitosamente";
                return RedirectToAction("Index");
            }
            catch (Exception ex)
            {
                ModelState.AddModelError(string.Empty, ex.Message); // Agregamos el error a mostrarse
                return View("Eliminacion", bastanteoService.ObtenerBastanteo(xClie, grupo, xPoder)); // Problemas! De nuevo a Eliminacion.aspx

            }
            





            
            
        }

        private ICollection<SelectListItem> ListarClientes()
        {
            ICollection<SelectListItem> clientes = new List<SelectListItem>();
            clientes.Add(new SelectListItem() { Value = string.Empty, Text = "Seleccione.." });
            foreach (Cliente clienteL in  AdministracionService.ListarClientes()) 
                clientes.Add(new SelectListItem()
                {
                    Value = clienteL.codclie.ToString(),
                    Text = clienteL.razclie
                });
            return clientes;
        }

        private ICollection<SelectListItem> ListarPoderes()
        {
            ICollection<SelectListItem> poderes = new List<SelectListItem>();
            poderes.Add(new SelectListItem() { Value = string.Empty, Text = "Seleccione.." });
            foreach (Poderes poderL in bastanteoService.ListarPoderes())  // .ListarPoderes())
                poderes.Add(new SelectListItem()
                {
                    Value = poderL.codpod,  //.ToString(),
                    Text = poderL.nompod
                });
            return poderes;
        }

    }
}
